/*
 * AvionServiceImpl.java
 *
 * Created on 27 de octubre de 2007, 01:54
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fiuba.aterrizar.servidor.service.impl;

import com.fiuba.aterrizar.servidor.domain.Avion;
import com.fiuba.aterrizar.servidor.domain.ModeloAvion;
import com.fiuba.aterrizar.servidor.dto.AvionDTO;
import com.fiuba.aterrizar.servidor.dto.ModeloAvionDTO;
import com.fiuba.aterrizar.servidor.exception.AvionExistenteException;
import com.fiuba.aterrizar.servidor.service.AvionService;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 *
 * @author Demian
 */
public class AvionServiceImpl implements AvionService{
    
    
    public Collection findAll(String modelo, String codigo){
        Collection avionesDTO = new ArrayList();
        Iterator it = Avion.findAll(modelo,codigo).iterator();
        while (it.hasNext()) {
            Avion avion = (Avion) it.next();
            avionesDTO.add(new AvionDTO(avion));
        }
        
        return avionesDTO;
    }

    public Collection findAllModelos() {
        Collection modelosDTO = new ArrayList();
        modelosDTO.add(new ModeloAvionDTO());
        Iterator it = ModeloAvion.findAllModelos().iterator();
        while (it.hasNext()) {
            ModeloAvion modelo = (ModeloAvion) it.next();
            modelosDTO.add(new ModeloAvionDTO(modelo));
        }
        
        return modelosDTO;
    }

    public void eliminar(String codigo) {
        Avion avion = new Avion();
        avion.setCodigo(codigo);
        avion.delete();
    }

    public void agregar(AvionDTO avionDto) throws AvionExistenteException{
        Collection aviones = Avion.findAll(null, avionDto.getCodigo());        
        if ((aviones != null) && (aviones.size()>0)){
            throw new AvionExistenteException();
        }
            
        Avion avion = new Avion();        
        avion.setCodigo(avionDto.getCodigo());
        avion.setEstado(avionDto.getEstado());
        avion.setModelo(avionDto.getModelo());
        avion.setCantidadAsientosEjecutiva(avionDto.getCantidadAsientosEjecutiva());
        avion.setCantidadAsientosPrimera(avionDto.getCantidadAsientosPrimera());
        avion.setCantidadAsientosTurista(avionDto.getCantidadAsientosTurista());
                
        avion.save();
    }

    public void modificar(AvionDTO avionDto) {
        Avion avion = new Avion();        
        avion.setCodigo(avionDto.getCodigo());
        avion.setEstado(avionDto.getEstado());
        avion.setModelo(avionDto.getModelo());
        avion.setCantidadAsientosEjecutiva(avionDto.getCantidadAsientosEjecutiva());
        avion.setCantidadAsientosPrimera(avionDto.getCantidadAsientosPrimera());
        avion.setCantidadAsientosTurista(avionDto.getCantidadAsientosTurista());
        
        avion.update();
    }
}
